package day18.cartest;

/**
 * Car1类的测试类
 * 用于测试Car1类及其包含的四种内部类的功能
 * 包括：Car1(外部类)、Engine(发动机)、Glass(玻璃)、Tire(轮胎)
 */
public class Car1Test {
    public static void main(String[] args) {
        // 创建Car1实例，测试构造函数
        Car1 car = new Car1("丰田", "卡罗拉");
        
        // 测试汽车基本信息的获取方法
        System.out.println("=== 汽车基本信息测试 ===");
        System.out.println("汽车品牌: " + car.getBrand());
        System.out.println("汽车型号: " + car.getModel());
        
        // 测试内部类的访问和属性获取
        System.out.println("\n=== 内部类属性测试 ===");
        Car1.Engine engine = car.getEngine();
        Car1.Glass glass = car.getGlass();
        Car1.Tire tire = car.getTire();
        
        System.out.println("发动机类型: " + engine.getType());
        System.out.println("发动机功率: " + engine.getPower() + "马力");
        System.out.println("玻璃类型: " + glass.getType());
        System.out.println("玻璃透明度: " + (glass.isTransparent() ? "透明" : "不透明"));
        System.out.println("轮胎类型: " + tire.getType());
        System.out.println("轮胎尺寸: " + tire.getSize());
        System.out.println("轮胎品牌: " + tire.getBrand());
        
        // 测试汽车启动和停止功能
        System.out.println("\n=== 汽车操作功能测试 ===");
        car.start();
        car.stop();
        
        // 测试内部类的特有方法
        System.out.println("\n=== 内部类特有方法测试 ===");
        glass.clean();
        tire.inflate();
        tire.replace();
        
        // 测试修改属性功能
        System.out.println("\n=== 属性修改功能测试 ===");
        // 修改汽车属性
        car.setBrand("本田");
        car.setModel("雅阁");
        System.out.println("修改后汽车品牌: " + car.getBrand());
        System.out.println("修改后汽车型号: " + car.getModel());
        
        // 修改发动机属性
        engine.setPower(200);
        engine.setType("涡轮增压发动机");
        System.out.println("修改后发动机类型: " + engine.getType());
        System.out.println("修改后发动机功率: " + engine.getPower() + "马力");
        
        // 修改玻璃属性
        glass.setTransparent(false);
        glass.setType("防弹玻璃");
        System.out.println("修改后玻璃类型: " + glass.getType());
        System.out.println("修改后玻璃透明度: " + (glass.isTransparent() ? "透明" : "不透明"));
        
        // 修改轮胎属性
        tire.setSize(205);
        tire.setBrand("普利司通");
        tire.setType("四季轮胎");
        System.out.println("修改后轮胎类型: " + tire.getType());
        System.out.println("修改后轮胎尺寸: " + tire.getSize());
        System.out.println("修改后轮胎品牌: " + tire.getBrand());
        
        // 再次测试汽车操作
        System.out.println("\n=== 修改属性后汽车操作测试 ===");
        car.start();
        car.stop();
    }
}